Kurt Hsu's blog

The Rails developer in taiwan.


  • 首頁

  • 標籤

  • 分類

  • 歸檔

[Rails]image file in asset or public

發表於 2018-04-22 更新於 2020-01-20 分類於 Rails

網上查了很多文章,一直對於圖片檔案要放在app/asset/images裡面還是public裡面感到很疑惑,應用起來也踢到很多鐵板,這邊把自己的問題記錄下來,也可以做最簡單的應用!

什麼時候放在app/asset/images裡面?

幾乎所有的圖片都放在asset裡面就好了,之後搭配關於Asset Pipeline的$ rake assets:precompile指令即可,後面會再提到。

什麼時候放在public裡面?

其實public也不止能拿來放圖片,他有點像一個倉庫專門放置靜態頁面的東西。

靜態頁面大多是指404.html找不到頁面或者是500.html伺服器有狀況比較少用到且沒有什麼功能的頁面,此時給予這些靜態頁面的圖片放置在這裡比較正確。

實作


假設我們在asset/images裡面放了一個圖片image.jpg:

用scss引入當background

stylesheet
1
background-image: image-url("imag.jpg");

當作圖片的話可以直接在view裡寫上rails的helper:

view
1
<%= image_tag("imag.jpg", class:"images") %>

如果有錯誤的話嘗試換上雙引號

Asset Pipeline


Asset Pipeline是什麼?可以直接先參考Rails 實戰聖經。

白話的說Rails會自己把所有css和javascript壓縮成一個檔案不製造過多的網頁request。
處理圖片的時候會給圖片名稱一段編碼,以後只要更新過圖片即使是一模一樣的也不會造成catch!

請檢查自己deploy的環境,例如本地端或者是上heroku是不用自己下指令壓縮的!他在執行伺服器的時候就會自動執行,不然正常來講需要下指令:

$ rake assets:precompile
這時候檔案會產生在public/assets/下。

當然要刪除的話就下:
$ rake assets:clobber

實戰聖經補充:

注意,如果在開發模式下執行了rake assets:precompile,那麼因為放在public/assets/下的靜態檔案會優先丟給瀏覽器,所以這時候再修改app/assets下的原始碼會沒有作用。所以,開發時請記得要刪除這個目錄。

參考文章:
Rails 實戰聖經

# Rails # Asset Pipeline # public
[Disqus]簡易留言板
[Rails]scss and javascript in specific page
  • 文章目錄
  • 本站概要

Kurt Hsu

Progress One Percent Every Day
171 文章
55 分類
163 標籤
RSS
  1. 1. 什麼時候放在app/asset/images裡面?
  2. 2. 什麼時候放在public裡面?
  • 實作
  • Asset Pipeline
    1. 實戰聖經補充:
  • © 2020 Kurt Hsu
    由 Hexo 強力驅動 v3.8.0
    |
    主題 – NexT.Muse v7.3.0